/**
 * @file logging_example.cpp
 * @brief 日志系统使用示例
 * @details 演示如何使用Logger类记录不同类型的数据
 */

#include "logging.h"

/**
 * @brief 主函数
 * @details 演示如何使用Logger类记录各种数据类型
 * @return 程序退出码，0表示成功
 */
int main(int, char **) {
  using namespace Common;

  // 定义不同类型的变量用于测试
  char c = 'd';                  /**< 字符类型测试数据 */
  int i = 3;                     /**< 整数类型测试数据 */
  unsigned long ul = 65;         /**< 无符号长整数类型测试数据 */
  float f = 3.4;                 /**< 浮点数类型测试数据 */
  double d = 34.56;              /**< 双精度浮点数类型测试数据 */
  const char* s = "test C-string"; /**< C风格字符串测试数据 */
  std::string ss = "test string";  /**< 标准字符串测试数据 */

  /**
   * @brief 创建日志记录器实例
   * @details 初始化一个Logger对象，指定日志文件名为"logging_example.log"
   */
  Logger logger("logging_example.log");

  /**
   * @brief 记录不同类型的数据
   * @details 使用log方法记录各种数据类型，并使用%作为占位符
   */
  // 记录字符、整数和无符号整数
  logger.log("Logging a char:% an int:% and an unsigned:%\n", c, i, ul);
  // 记录浮点数和双精度浮点数
  logger.log("Logging a float:% and a double:%\n", f, d);
  // 记录C风格字符串
  logger.log("Logging a C-string:'%'\n", s);
  // 记录标准字符串
  logger.log("Logging a string:'%'\n", ss);

  // 程序成功返回
  return 0;
}
